Spring 容器中的 bean 可以分为 5 个范围。所有范围的名称都是自说明的,但是为了避
免混淆,还是让我们来解释一下:
singleton:这种 bean 范围是默认的,这种范围确保不管接受到多少个请求,每个容器
中只有一个 bean 的实例,单例的模式由 bean factory 自身来维护。
prototype:原形范围与单例范围相反,为每一个 bean 请求提供一个实例。
request:在请求 bean 范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以
后,bean 会失效并被垃圾回收器回收。
Session:与请求范围类似,确保每个 session 中有一个 bean 的实例,在 session 过期后,
bean 会随之失效。
global-session:global-session 和 Portlet 应用相关。当你的应用部署在 Portlet 容器中工
作时,它包含很多 portlet。如果你想要声明让所有的 portlet 共用全局的存储变量的话,那
么这全局变量需要存储在 global-session 中。
全局作用域与 Servlet 中的 session 作用域效果相同。

Q.E.D.


如人饮水、冷暖自知